package com.summli.basic.class02;

/**
 * 求数组arr[L..R]中的最大值，怎么用递归方法实现。
 *
 * 1）将[L..R]范围分成左右两半。左：[L..Mid]  右[Mid+1..R]
 * 2）左部分求最大值，右部分求最大值
 * 3） [L..R]范围上的最大值，是max{左部分最大值，右部分最大值}
 */
public class Code08_GetMax {
    private static int getMax(int[] arr){
        int l=0;
        int r = arr.length-1;
        return process(arr,l,r);
    }

    private static int process(int[] arr, int l, int r) {
        if(l == r){
            return arr[l];
        }
        int mid = l +((r-l)>>1);
        int process = process(arr, l, mid);
        int process1 = process(arr, mid + 1, r);
        return Math.max(process, process1);
    }
}
